<!DOCTYPE html>
<html>

<head>
	<meta charset="utf-8">
	<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
	<meta name="theme-color" content="#33474d">
	<title>失落的乐章</title>
	<link rel="stylesheet" href="/css/style.css" />
	
      <link rel="alternate" href="/atom.xml" title="失落的乐章" type="application/atom+xml">
    
</head>

<body>

	<header class="header">
		<nav class="header__nav">
			
				<a href="/archives" class="header__link">Archive</a>
			
				<a href="/tags" class="header__link">Tags</a>
			
				<a href="/atom.xml" class="header__link">RSS</a>
			
		</nav>
		<h1 class="header__title"><a href="/">失落的乐章</a></h1>
		<h2 class="header__subtitle">技术面前，永远都是学生。</h2>
	</header>

	<main>
		
	<span class="different-posts different-posts_earlier">📖 <a href="/page/62">earlier posts</a> 📖</span>




	<article>
	
		<h1><a href="/2017/10/12/1. Linux 基础/15. Linux 三个时间属性/">Linux 文件的三个时间属性</a></h1>
	
	<div class="article__infos">
		<span class="article__date">2017-10-12</span><br />
		
		
			<span class="article__tags">
			  	<a class="article__tag-link" href="/tags/Linux/">Linux</a>
			</span>
		
	</div>

	

	
		<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;平时通常同find命令找一些文件时会用到这些参数。那么这三个参数到底有啥区别呢。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;文件的 Access time，atime 是在读取文件或者执行文件时更改的。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;文件的 Modified time，mtime 是在写入文件时随文件内容的更改而更改的。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;文件的 Change time，ctime 是在写入文件、更改所有者、权限或链接设置时随 Inode 的内容更改而更改的。</p>
<blockquote>
<p>modify time（mtime）创建或更改的时间<br>access time (atime) 访问的时间<br>change time (ctime) 更改原数据（inode号，属性，权限等）的时间     </p>
</blockquote>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;因此，更改文件的内容即会更改 mtime 和 ctime，但是文件的 ctime 可能会在 mtime 未发生任何变化时更改，如权限更改了但文件内容没有更改。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ls(1) 命令可用来列出文件的 atime、ctime 和 mtime。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ls -lc filename         列出文件的 ctime</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ls -lu filename         列出文件的 atime</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ls -l filename          列出文件的 mtime </p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div></pre></td><td class="code"><pre><div class="line">ls -l filename（ls默认显示的是mtime） </div><div class="line">-rw-rw-r-- 1 lawrance lawrance 27 Oct  5 02:09 filename</div><div class="line"> </div><div class="line">ls -l --time=ctime filename </div><div class="line">-rwxr-xr-x 1 lawrance lawrance 27 Oct  6 02:50 filename</div><div class="line"> </div><div class="line">ls -l --time=atime filename </div><div class="line">-rw-rw-r-- 1 lawrance lawrance 27 Oct  6 02:30 filename</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;1、访问时间，每次读取文件的内容，时间就会更新。比如对这个文件运用 more、cat等命令。ls、stat命令都不会修改文件的访问时间。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;2、修改时间，修改时间是文件内容最后一次被修改时间。比如：vi后保存文件。    </p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;3、状态改动时间。文件属性最后一次被修改的时间，通过chmod、chown命令修改一次文件属性，这个时间就会更新。  </p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;atime不一定在访问文件之后被修改，因为：使用ext3文件系统的时候，如果在mount的时候使用了noatime参数那么就不会更新atime的信息。而这是加了 noatime 取消了, 不代表真实情況。反正, 这三个 time stamp 都放在 inode 中. 若 mtime, atime 修改, inode 就一定會改, 既然 inode 改了, 那 ctime 也就跟著要改了（理论上是这样的，但是真实情况并非如此，如果是读取文档或者执行二进制文件的时候，虽然atime会变，但ctime不变，这是系统这样设计的）.</p>

	

	

</article>




	<article>
	
		<h1><a href="/2017/10/12/1. Linux 基础/13. Linux sudo 详解/">Linux sudo 详解</a></h1>
	
	<div class="article__infos">
		<span class="article__date">2017-10-12</span><br />
		
		
			<span class="article__tags">
			  	<a class="article__tag-link" href="/tags/Linux/">Linux</a>
			</span>
		
	</div>

	

	
		<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;用 su 可以切换用户身份，如果每个普通用户都能切换到 root 身份，如果某个用户不小心泄漏了 root 密码，那么系统是非常的不安全的。为了改进这个问题，产生了 sudo 这个命令。<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;使用 sudo 执行一个 root 才能执行的命令是可以办到的，但是需要输入密码，这个密码并不是 root 的密码，而是用户自己的密码。默认只有 root 用户能使用 sudo 命令，普通用户想要使用 sudo ，是需要 root 预先设定的。使用 <code>visudo</code> 命令去编辑相关的配置文件 <code>/etc/sudoers</code> 。如果没有 visudo 这个命令，使用 yum 安装：</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">yum install -y sudo</div></pre></td></tr></table></figure>
<h2 id="语法"><a href="#语法" class="headerlink" title="语法"></a>语法</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">sudo [选项] [参数]</div></pre></td></tr></table></figure>
<h2 id="选项"><a href="#选项" class="headerlink" title="选项"></a>选项</h2><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;-b：在后台执行指令；<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;-h：显示帮助；<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;-H：将HOME环境变量设为新身份的HOME环境变量；<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;-k：结束密码的有效期限，也就是下次再执行sudo时便需要输入密码；。<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;-l：列出目前用户可执行与无法执行的指令；<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;-p：改变询问密码的提示符号；<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;-s<shell>：执行指定的shell；<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;-u&lt;用户&gt;：以指定的用户作为新的身份。若不加上此参数，则预设以root作为新的身份；<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;-v：延长密码有效期限5分钟；<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;-V ：显示版本信息。       </shell></p>
<h2 id="参数"><a href="#参数" class="headerlink" title="参数"></a>参数</h2><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;指令：需要运行的指令和对应的参数。</p>
<h2 id="配置-sudo"><a href="#配置-sudo" class="headerlink" title="配置 sudo"></a>配置 sudo</h2><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;默认 root 能够 sudo 是因为这个文件中有一行 “root    ALL=(ALL) ALL” 在该行下面加入 “test ALL=(ALL) ALL” 就可以让 test 用户拥有了 sudo 的权利。使用 “visudo” 命令编辑 /etc/sudoers 配置文件，其实操作方法和 “vim” 命令使用方法是一样的，按 “i” 进入编辑模式，编辑完成后，按 “Esc” ，再输入 “:wq” 完成保存。</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div></pre></td><td class="code"><pre><div class="line"><span class="comment">## Allow root to run any commands anywhere</span></div><div class="line">root    ALL=(ALL)       ALL</div><div class="line"><span class="built_in">test</span>    ALL=(ALL)       ALL</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;此时可以验证一下 test 账户的权限了</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div></pre></td><td class="code"><pre><div class="line">[root@localhost ~]<span class="comment"># su test</span></div><div class="line">[<span class="built_in">test</span>@localhost root]$ ls</div><div class="line">ls: 无法打开目录.: 权限不够</div><div class="line">[<span class="built_in">test</span>@localhost root]$ sudo ls</div><div class="line"></div><div class="line">We trust you have received the usual lecture from the <span class="built_in">local</span> System</div><div class="line">Administrator. It usually boils down to these three things:</div><div class="line"></div><div class="line">    <span class="comment">#1) Respect the privacy of others.</span></div><div class="line">    <span class="comment">#2) Think before you type.</span></div><div class="line">    <span class="comment">#3) With great power comes great responsibility.</span></div><div class="line"></div><div class="line">[sudo] password <span class="keyword">for</span> <span class="built_in">test</span>:</div><div class="line">123  456  789  anaconda-ks.cfg  dirb  install.log  install.log.syslog  <span class="built_in">test</span>  test1  test2  test3</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;由于切换到 test 账户后的当前目录依旧是在 /root 下， test 账户没有任何权限，所以  ‘ls’ 的时候提示说权限不够，然而使用 <code>sudo ls</code> 输入 test 账户自身的密码后就有权限了。初次使用 sudo 时会有上面的一大段提示，而后再次使用 sudo 命令则不再提示。<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;如果每增加一用户就设置一行，这样太麻烦了。所以可以这样设置。把 “#%wheel ALL=(ALL) ALL” 前面 ‘#’ 去掉，让这一行生效。意思是， wheel 这个组的所有用户都拥有了 sudo 权利。接下来只需要把想让 sudo 权利的所有用户加入到 wheel 这个组中即可：</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div></pre></td><td class="code"><pre><div class="line"><span class="comment">## Allows people in group wheel to run all commands</span></div><div class="line">%wheel  ALL=(ALL)       ALL</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;配置文件 /etc/sudoers 包含了诸多配置项，可以使用 <code>man sudoers</code> 来获得帮助信息。    </p>
<h2 id="实例"><a href="#实例" class="headerlink" title="实例"></a>实例</h2><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;配置 sudo 必须通过编辑 <code>/etc/sudoers</code> 文件，而且只有超级用户才可以修改它，还必须使用 visudo 编辑。之所以使用 visudo 有两个原因：       </p>
<ol>
<li>它能后防止一两个用户同时修改它；    </li>
<li>它也能进行有限的语法检查。  </li>
</ol>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;所以，即时只有一个超级用户，也最好用 visudo 来检查一下语法。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;visudo 默认的是在 vi 里打开配置文件，用 vi 来修改文件。可以在编译时修改这个默认项。 visudo 不会擅自保存带有语法错误的配置文件，它会提示出现的问题，并询问该如何处理：</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">&gt;&gt;&gt; sudoers file: syntax error, line 22 &lt;&lt;</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;此时有三种选择：   </p>
<ol>
<li>键入 “e” 是重新编辑</li>
<li>键入 “x” 是不保存退出</li>
<li>键入 “Q” 是退出并保存       </li>
</ol>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;如果选择 Q ,那么 sudo 将不回再运行，知道错误被纠正。<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;需求是把 Linux 服务器设置成：只允许使用普通账户登录，而普通账户登录后，可以不输入密码就能 sudo 切换到 root 账户。</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">[root@localhost ~]<span class="comment"># visudo</span></div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;然后在文件的最后面加三行：</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div></pre></td><td class="code"><pre><div class="line">User_Alias USER_SU = <span class="built_in">test</span>, test1, yanyi</div><div class="line">Cmnd_Alias SU = /bin/su</div><div class="line">USER_SU ALL=(ALL) NOPASSWD: SU</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;保存配置文件后，使用 test 、test1 、yanyi 三个账户登录 Linux 后，执行命令 <code>sudo su -</code> 切换到 root 账户，获取 root 账户的所有权利。</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div></pre></td><td class="code"><pre><div class="line">[root@localhost ~]<span class="comment"># su - test</span></div><div class="line">[<span class="built_in">test</span>@localhost ~]$ sudo su -</div><div class="line">[root@localhost ~]<span class="comment"># whoami</span></div><div class="line">root</div></pre></td></tr></table></figure>
<h2 id="日志与安全"><a href="#日志与安全" class="headerlink" title="日志与安全"></a>日志与安全</h2><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;sudo 为安全考虑得很周到，不仅可以记录日志，还能在有必要时向系统管理员报告。但是， sudo 的日志功能不是自动的，必须由管理员开启。</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div></pre></td><td class="code"><pre><div class="line">touch /var/<span class="built_in">log</span>/sudo</div><div class="line">vi /etc/syslog.conf</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;在 syslog.conf 最后面加一行（必须用 tab 分隔开）并保存：</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">local2.debug    /var/<span class="built_in">log</span>/sudo</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;重启日志守候进程</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">ps aux | grep syslogd</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;把得到的 syslog 进程的 PID (输出的第二列是 PID)填入下面</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line"><span class="built_in">kill</span> -HUP PID</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;这样 sudo 就可以写日志了：</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div></pre></td><td class="code"><pre><div class="line">[foobar@localhost ~]$ sudo ls /rootanaconda-ks.cfg </div><div class="line">Desktop install.log </div><div class="line">install.log.syslog </div><div class="line"><span class="variable">$cat</span> /var/<span class="built_in">log</span>/sudoJul 28 22:52:54 localhost sudo: foobar : </div><div class="line">TTY=pts/1 ; <span class="built_in">pwd</span>=/home/foobar ; USER=root ; <span class="built_in">command</span>=/bin/ls /root</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;不过，有个小小的“缺陷”，sudo 记录日志并不是很忠实：</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div></pre></td><td class="code"><pre><div class="line">[foobar@localhost ~]$ sudo cat /etc/shadow &gt; /dev/null</div><div class="line">cat /var/<span class="built_in">log</span>/sudo...Jul 28 23:10:24 localhost sudo: foobar : TTY=pts/1 ;</div><div class="line">PWD=/home/foobar ; USER=root ; COMMAND=/bin/cat /etc/shadow</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;重定向没有被记录在日志里，因为在命令运行之前，shell 把重定向的工作做完了，sudo 根本就没有看到重定向。这样也有个好处，下面的手段不回得逞：</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">[foobar@localhost ~]$ sudo ls /root &gt; /etc/shadowbash: /etc/shadow: 权限不够</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;sudo 有自己的方式来保护安全。以 root 的身份执行 <code>sudo -v</code> ，查看 sudo 的设置。因为考虑到安全问题，一部分环境变量并没有传递给 sudo 后面的命令，或者被检查后再传递的，比如：PATH 、HOME 、SHELL 等。当然也可以通过 sudoers 来配置环境变量。</p>
<h2 id="sudo-i-也可以登录到-root"><a href="#sudo-i-也可以登录到-root" class="headerlink" title="sudo -i 也可以登录到 root"></a>sudo -i 也可以登录到 root</h2><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;sudo : 暂时切换到超级用户模式以执行超级用户权限，提示输入密码时该密码为当前用户的密码，而不是超级账户的密码。不过有时间限制，Ubuntu默认为一次时长15分钟。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;su ： 切换到某某用户模式，提示输入密码时该密码为切换后账户的密码，用法为“su 账户名称”。如果后面不加账户时系统默认为root账户，密码也为超级账户的密码。没有时间限制。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;sudo -i: 为了频繁的执行某些只有超级用户才能执行的权限，而不用每次输入密码，可以使用该命令。提示输入密码时该密码为当前账户的密码。没有时间限制。执行该命令后提示符变为“#”而不是“$”。想退回普通账户时可以执行“exit”或“logout” 。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;还有几个类似的用法：</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;sudo /bin/bash   ： 这个命令也会切换到root的bash下，但不能完全拥有root的所有环境变量，比如PATH，可以拥有root用户的权限。这个命令和 sudo -s 是等同的。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;sudo -s : 如上</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;sudo su  ： 这个命令，也是登录到了root，但是并没有切换root的环境变量，比如PATH。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;sudo su - :  这个命令，纯粹的切换到root环境下，可以这样理解，先是切换到了root身份，然后又以root身份执行了 su - ，这个时候跟使用root登录没有什么区别。这个结果貌似跟sudo -i 的效果是一样的，但是也有不同，sudo 只是临时拥有了root的权限，而su则是使用root账号登录了linux系统。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;所以，我们再来总结一下：    </p>
<ol>
<li>sudo su -  约等于  sudo -i</li>
<li>sudo -s  完全等于  sudo  /bin/bash  约等于 sudo su</li>
<li>sudo 终究被一个”临时权限的帽子”扣住，不能等价于纯粹的登录到系统里。</li>
</ol>

	

	

</article>




	<article>
	
		<h1><a href="/2017/10/12/1. Linux 基础/14. Linux su 和 sudo 命令的区别/">su 和 sudo 命令的区别</a></h1>
	
	<div class="article__infos">
		<span class="article__date">2017-10-12</span><br />
		
		
			<span class="article__tags">
			  	<a class="article__tag-link" href="/tags/Linux/">Linux</a>
			</span>
		
	</div>

	

	
		<h2 id="使用-su-命令临时切换用户身份"><a href="#使用-su-命令临时切换用户身份" class="headerlink" title="使用 su 命令临时切换用户身份"></a>使用 su 命令临时切换用户身份</h2><h3 id="一、su-的适用条件和威力"><a href="#一、su-的适用条件和威力" class="headerlink" title="一、su 的适用条件和威力"></a>一、su 的适用条件和威力</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;su 命令就是切换用户的工具。比如以普通用户 beinan 登录的，但要田间用户任务，执行 useradd ，beinan 用户没有这个权限，而这个权限由 root 所拥有。解决办法只有两个：</p>
<ol>
<li>退出 beinan 用户，重新以 root 用户登录，但这种办法并不是最好的；</li>
<li>没有必要退出 beinan 用户，可以用 su 来切换到 root 下进行条件用户的工作，等任务完成后再退出 root 。</li>
</ol>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;可以看到，通过 su 切换是一种比较好的办法。    </p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;通过 su 可以在用户之间切换，如果超级权限用户 root 向普通或虚拟用户切换不需要密码，而普通用户切换到其他任何用户都需要密码验证。</p>
<h3 id="二、su-的用法："><a href="#二、su-的用法：" class="headerlink" title="二、su 的用法："></a>二、su 的用法：</h3><figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">su [OPTION选项参数] [用户]</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;- ，-l ， –login 登录并改变到所切换的用户环境；      </p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;-c ，–command=COMMAND 执行一个命令，然后退出所切换到的用户环境；</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;更多帮助，参考:</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">man su</div></pre></td></tr></table></figure>
<h3 id="三、su-的范例："><a href="#三、su-的范例：" class="headerlink" title="三、su 的范例："></a>三、su 的范例：</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;su 在不加任何参数，默认为切换到 root 用户，但没有转到 root 用户家目录下，也就是说这时虽然是切换为 root 用户了，但并没有改变 root 登录环境；用户默认的登录环境，可以在 /etc/passwd 中查看，包括家目录， SHELL 定义等；</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div></pre></td><td class="code"><pre><div class="line">[beinan@localhost ~]?$ su</div><div class="line">Password:</div><div class="line">[root@localhost beinan]# pwd</div><div class="line">/home/beinan</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;su 加参数 - ，表示默认切换到 root 用户，并且改变到 root 用户的环境变量；</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div></pre></td><td class="code"><pre><div class="line">[beinan@localhost ~]?$ pwd</div><div class="line">/home/beinan</div><div class="line">[beinan@localhost ~]?$ su -</div><div class="line">Password:</div><div class="line">[root@localhost ~]# pwd</div><div class="line">/root</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;su 参数 - 用户名</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div><div class="line">16</div><div class="line">17</div><div class="line">18</div></pre></td><td class="code"><pre><div class="line">[beinan@localhost ~]?$ su - root 注：这个和su - 是一样的功能；</div><div class="line">Password:</div><div class="line">[root@localhost ~]# pwd</div><div class="line">/root</div><div class="line">[beinan@localhost ~]?$ su - linuxsir 注：这是切换到 linuxsir用户</div><div class="line">Password: 注：在这里输入密码；</div><div class="line">[linuxsir@localhost ~]?$ pwd 注：查看用户当前所处的位置；</div><div class="line">/home/linuxsir</div><div class="line">[linuxsir@localhost ~]?$ id 注：查看用户的UID和GID信息，主要是看是否切换过来了；</div><div class="line">uid=505(linuxsir) gid=502(linuxsir) groups=0(root),500(beinan),502(linuxsir)</div><div class="line">[linuxsir@localhost ~]?$</div><div class="line">[beinan@localhost ~]?$ su - -c ls 注：这是su的参数组合，表示切换到root用户，并且改变到root环境，然后列出root家目录的文件，然后退出root用户；</div><div class="line">Password: 注：在这里输入root的密码；</div><div class="line">anaconda-ks.cfg Desktop install.log install.log.syslog testgroup testgroupbeinan testgrouproot</div><div class="line">[beinan@localhost ~]?$ pwd 注：查看当前用户所处的位置；</div><div class="line">/home/beinan</div><div class="line">[beinan@localhost ~]?$ id 注：查看当前用户信息；</div><div class="line">uid=500(beinan) gid=500(beinan) groups=500(beinan)</div></pre></td></tr></table></figure>
<h3 id="四、su-的优缺点"><a href="#四、su-的优缺点" class="headerlink" title="四、su 的优缺点"></a>四、su 的优缺点</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;su 的确为管理带来方便，通过切换到 root 下，能完成所有系统管理工具，只要把 root 的密码交给任何一个普通用户，它都能切换到 root 来完成所有的系统管理工作；但通过 su 切换到 root 后，也有不安全因素；比如系统有10个用户，而且都参与管理。如果这10个用户都涉及到超级权限的运用，作为管理员如果想让其他用户通过 su 来切换到 超级权限的 root ，必须把 root 权限密码都告诉这10个用户、如果这10个用户都有 root 权限，通过 root 权限可以做任何事，这在一定程度上就对系统的安全造成了威胁，简直是噩梦；“没有不安全的系统，只有不安全的人” ，绝对不能保证这10个用户都能按正常操作流程来管理系统，其中任何一个人对系统操作的重大失误，都可能导致系统崩溃或数据丢失；所以 su 工具在多人参与的系统管理中，并不hi是最好的选择，su 只适合于一两个人参与管理的系统，毕竟 su 并不能让普通用户受限的使用；超级用户 root 密码应该掌握在少数用户手中，这绝对是真理！所以集权而治的存在是有一定道理的。</p>
<h2 id="sudo-授权许可使用的-su-，也是受限制的-su"><a href="#sudo-授权许可使用的-su-，也是受限制的-su" class="headerlink" title="sudo 授权许可使用的 su ，也是受限制的 su"></a>sudo 授权许可使用的 su ，也是受限制的 su</h2><h3 id="一、sudo-的适用条件"><a href="#一、sudo-的适用条件" class="headerlink" title="一、sudo 的适用条件"></a>一、sudo 的适用条件</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;由于su 对切换到超级权限用户root后，权限的无限制性，所以su并不能担任多个管理员所管理的系统。如果用su 来切换到超级用户来管理系统，也不能明确哪些工作是由哪个管理员进行的操作。特别是对于服务器的管理有多人参与管理时，最好是针对每个管理员的技术特长和管理范围，并且有针对性的下放给权限，并且约定其使用哪些工具来完成与其相关的工作，这时我们就有必要用到 sudo。<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;通过sudo，我们能把某些超级权限有针对性的下放，并且不需要普通用户知道root密码，所以sudo 相对于权限无限制性的su来说，还是比较安全的，所以sudo 也能被称为受限制的su ；另外sudo 是需要授权许可的，所以也被称为授权许可的su；<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;sudo 执行命令的流程是当前用户切换到root（或其它指定切换到的用户），然后以root（或其它指定的切换到的用户）身份执行命令，执行完成后，直接退回到当前用户；而这些的前提是要通过sudo的配置文件/etc/sudoers来进行授权；<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;比如我们想用beinan普通用户通过more /etc/shadow文件的内容时，可能会出现下面的情况；</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div></pre></td><td class="code"><pre><div class="line">[beinan@localhost ~]?$ more /etc/shadow</div><div class="line">/etc/shadow: 权限不够</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;这时我们可以用sudo more /etc/shadow 来读取文件的内容；就就需要在/etc/soduers中给beinan授权<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;于是我们就可以先su 到root用户下通过visudo 来改/etc/sudoers ；（比如我们是以beinan用户登录系统的）</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div></pre></td><td class="code"><pre><div class="line">[beinan@localhost ~]?$ su</div><div class="line">Password: 注：在这里输入root密码</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;下面运行 visudo</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">[root@localhost beinan]<span class="comment"># visudo 注：运行visudo 来改 /etc/sudoers</span></div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;加入如下一行，退出保存；退出保存，在这里要会用vi，visudo也是用的vi编辑器；至于vi的用法不多说了；beinan ALL=/bin/more 表示beinan可以切换到root下执行more 来查看文件；<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;退回到beinan用户下，用exit命令；</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div></pre></td><td class="code"><pre><div class="line">[root@localhost beinan]<span class="comment"># exit</span></div><div class="line"><span class="built_in">exit</span></div><div class="line">[beinan@localhost ~]?$</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;查看beinan的通过sudo能执行哪些命令？</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div></pre></td><td class="code"><pre><div class="line">[beinan@localhost ~]?$ sudo -l</div><div class="line">Password: 注：在这里输入beinan用户的密码</div><div class="line">User beinan may run the following commands on this host: 注：在这里清晰的说明在本台主机上，beinan用户可以以root权限运行more ；在root权限下的more ，可以查看任何文本文件的内容的；</div><div class="line">(root) /bin/more</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;最后，我们看看是不是beinan用户有能力看到/etc/shadow文件的内容；   </p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">[beinan@localhost ~]?$ sudo more /etc/shadow</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;beinan 不但能看到 /etc/shadow文件的内容，还能看到只有root权限下才能看到的其它文件的内容，比如；  </p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">[beinan@localhost ~]?$ sudo more /etc/gshadow</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;对于beinan用户查看和读取所有系统文件中，我只想把/etc/shadow 的内容可以让他查看；可以加入下面的一行；</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">beinan ALL=/bin/more /etc/shadow</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;题外话：有的弟兄会说，我通过su 切换到root用户就能看到所有想看的内容了，哈哈，对啊。但咱们现在不是在讲述sudo的用法吗？如果主机上有多个用户并且不知道root用户的密码，但又想查看某些他们看不到的文件，这时就需要管理员授权了；这就是sudo的好处；      </p>
<h4 id="实例：练习用户组在-etc-sudoers中写法；"><a href="#实例：练习用户组在-etc-sudoers中写法；" class="headerlink" title="实例：练习用户组在/etc/sudoers中写法；"></a>实例：练习用户组在/etc/sudoers中写法；</h4><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;如果用户组出现在/etc/sudoers 中，前面要加%号，比如%beinan ，中间不能有空格；%beinan ALL=/usr/sbin/*,/sbin/*<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;如果我们在 /etc/sudoers 中加上如上一行，表示beinan用户组下的所有成员，在所有可能的出现的主机名下，都能切换到root用户下运行 /usr/sbin和/sbin目录下的所有命令；      </p>
<h4 id="实例：练习取消某类程序的执行："><a href="#实例：练习取消某类程序的执行：" class="headerlink" title="实例：练习取消某类程序的执行："></a>实例：练习取消某类程序的执行：</h4><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;取消程序某类程序的执行，要在命令动作前面加上!号； 在本例中也出现了通配符的*的用法；</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">beinan ALL=/usr/sbin/*,/sbin/*,!/usr/sbin/fdisk 注：把这行规则加入到/etc/sudoers中；但您得有beinan这个用户组，并且beinan也是这个组中的才行；</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;本规则表示beinan用户在所有可能存在的主机名的主机上运行/usr/sbin和/sbin下所有的程序，但fdisk 程序除外；</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div></pre></td><td class="code"><pre><div class="line">[beinan@localhost ~]?$ sudo -l</div><div class="line">Password: 注：在这里输入beinan用户的密码；</div><div class="line">User beinan may run the following commands on this host:(root) /usr/sbin/*(root) /sbin/*(root) !/sbin/fdisk</div><div class="line">[beinan@localhost ~]?$ sudo /sbin/fdisk -l</div><div class="line">Sorry, user beinan is not allowed to execute <span class="string">'/sbin/fdisk -l'</span> as root on localhost.</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;注：不能切换到root用户下运行fdisk 程序；<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;如果有sudo 的权限而没有su的权限: sudo su;</p>

	

	

</article>




	<article>
	
		<h1><a href="/2017/10/12/1. Linux 基础/12. Linux su 切换用户/">Linux 用户切换</a></h1>
	
	<div class="article__infos">
		<span class="article__date">2017-10-12</span><br />
		
		
			<span class="article__tags">
			  	<a class="article__tag-link" href="/tags/Linux/">Linux</a>
			</span>
		
	</div>

	

	
		<h2 id="命令："><a href="#命令：" class="headerlink" title="命令："></a>命令：</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">su</div></pre></td></tr></table></figure>
<h2 id="语法"><a href="#语法" class="headerlink" title="语法"></a>语法</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">su [-] username</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;后面可以跟 ‘-’ 也可以不跟，普通用户 su 不加 username 时就是切换到 root 用户，当然 root 用户同样可以 su 到普通用户。 ‘-’ 这个字符的作用是，加上后会初始化当前用户的各种环境变量。<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;做个实验说明加与不加 ‘-’ 的区别：</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div></pre></td><td class="code"><pre><div class="line">[<span class="built_in">test</span>@localhost ~]$ <span class="built_in">pwd</span></div><div class="line">/home/<span class="built_in">test</span></div><div class="line">[<span class="built_in">test</span>@localhost ~]$ su</div><div class="line">密码：</div><div class="line">[root@localhost <span class="built_in">test</span>]<span class="comment"># pwd</span></div><div class="line">/home/<span class="built_in">test</span></div><div class="line">[root@localhost <span class="built_in">test</span>]<span class="comment"># exit</span></div><div class="line"><span class="built_in">exit</span></div><div class="line">[<span class="built_in">test</span>@localhost ~]$ su -</div><div class="line">密码：</div><div class="line">[root@localhost ~]<span class="comment"># pwd</span></div><div class="line">/root</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;如果不加 ‘-’ 切换到 root 账户下时，当前目录没有变化，而加上 ‘-’ 切换到 root 账户后，当前目录为 root 账户的家目录，这跟直接登录 root 账户是一样的。当用 root 切换普通用户时，是不需要输入密码的。这也体现了 root 用户至高无上的权利。</p>
<h2 id="以某一个用户的身份执行某一个命令"><a href="#以某一个用户的身份执行某一个命令" class="headerlink" title="以某一个用户的身份执行某一个命令"></a>以某一个用户的身份执行某一个命令</h2><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>语法</strong></p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">su -c <span class="string">"command"</span> username</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>示例</strong><br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;用 www 的用户身份执行 /home/www/test.sh 这个脚本</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">su -c <span class="string">"/home/www/test.sh"</span> www</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;前提是，/home/www/test.sh 这个脚本文件 www 用户有执行权限</p>
<h2 id="如何限制远程登录时，不允许-root-登录，而只允许普通用户登录"><a href="#如何限制远程登录时，不允许-root-登录，而只允许普通用户登录" class="headerlink" title="如何限制远程登录时，不允许 root 登录，而只允许普通用户登录"></a>如何限制远程登录时，不允许 root 登录，而只允许普通用户登录</h2><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;修改配置文件 <code>/etc/sshd/sshd_config</code> </p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">vim /etc/sshd/sshd_config</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;在文件中查找 <code>“#PermitRoorLogin    yes”</code> 这句话，修改为 <code>“PermitRootLogin   no”</code> 表示不允许 root 用户远程登录。<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;/etc/sshd/sshd_config 为 sshd 服务的配置文件，默认虽然在前面加 “#” 注释了这句，“PermitRootLogin    yes” 但它默认就是允许 root 账户登录的，所以要想不让 root 登录，修改为 no 就可以了。保存配置文件后，重启 sshd 服务：</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">service sshd restart</div></pre></td></tr></table></figure>
<h2 id="如何限制远程登录时，只允许-root-使用密钥登录，而不能使用密码登录"><a href="#如何限制远程登录时，只允许-root-使用密钥登录，而不能使用密码登录" class="headerlink" title="如何限制远程登录时，只允许 root 使用密钥登录，而不能使用密码登录"></a>如何限制远程登录时，只允许 root 使用密钥登录，而不能使用密码登录</h2><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;打开配置文件 <code>/etc/sshd/sshd_config</code>     </p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">vim /etc/sshd/sshd_config</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;加上一句：</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">PermitRootLogin   without-password</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;保存配置文件后，重启 sshd 服务：</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">service sshd restart</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;这样就可以了。</p>

	

	

</article>




	<article>
	
		<h1><a href="/2017/10/12/1. Linux 基础/11. Linux usermod 修改用户属性/">Linux 修改用户属性</a></h1>
	
	<div class="article__infos">
		<span class="article__date">2017-10-12</span><br />
		
		
			<span class="article__tags">
			  	<a class="article__tag-link" href="/tags/Linux/">Linux</a>
			</span>
		
	</div>

	

	
		<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;us<br>ermod 命令修改系统帐户文件来反映通过命令行指定的变化    </p>
<h2 id="选项"><a href="#选项" class="headerlink" title="选项"></a>选项</h2><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;-a|–append&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;##把用户追加到某些组中，仅与-G选项一起使用 </p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;-c|–comment&#160;&#160;&#160;&#160;&#160;&#160;&#160;##修改/etc/passwd文件第五段comment</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;-d|–home&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;##修改用户的家目录通常和-m选项一起使用 </p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;-e|–expiredate&#160;&#160;&#160;&#160;&#160;&#160;##指定用户帐号禁用的日期，格式YY-MM-DD </p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;-f|–inactive&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ##用户密码过期多少天后采用就禁用该帐号，0表示密码已过期就禁用帐号，-1表示禁用此功能，默认值是-1 </p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;-g|–gid&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ##修改用户的gid，改组一定存在</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;-G|–groups&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;##把用户追加到某些组中，仅与-a选项一起使用 </p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;-l|–login&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;##修改用户的登录名称</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;-L|–lock&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;##锁定用户的密码 </p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;-m|–move-home&#160;&#160;&#160;##修改用户的家目录通常和-d选项一起使用 </p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;-s|–shell&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;##修改用户的shell </p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;-u|–uid&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;##修改用户的uid，该uid必须唯一 </p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;-U|–unlock&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;##解锁用户的密码 </p>
<h2 id="示例"><a href="#示例" class="headerlink" title="示例"></a>示例</h2><h3 id="1-新建用户-test-，密码-test-，另外添加-usertest-组"><a href="#1-新建用户-test-，密码-test-，另外添加-usertest-组" class="headerlink" title="1.新建用户 test ，密码 test ，另外添加 usertest 组"></a>1.新建用户 test ，密码 test ，另外添加 usertest 组</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div></pre></td><td class="code"><pre><div class="line"><span class="comment">#useradd test </span></div><div class="line"><span class="comment">#echo "test" | passwd --stdin test </span></div><div class="line"><span class="comment">#groupadd usertest</span></div></pre></td></tr></table></figure>
<h3 id="2-把-test-用户加入-usertest-组"><a href="#2-把-test-用户加入-usertest-组" class="headerlink" title="2.把 test 用户加入 usertest 组"></a>2.把 test 用户加入 usertest 组</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div></pre></td><td class="code"><pre><div class="line"><span class="comment">#usermod -aG usertest test ##多个组之间用空格隔开 </span></div><div class="line"><span class="comment">#id test </span></div><div class="line">uid=500(<span class="built_in">test</span>) gid=500(<span class="built_in">test</span>) groups=500(<span class="built_in">test</span>),501(usertest)</div></pre></td></tr></table></figure>
<h3 id="3-修改-test-用户的家目录"><a href="#3-修改-test-用户的家目录" class="headerlink" title="3.修改 test 用户的家目录"></a>3.修改 test 用户的家目录</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div></pre></td><td class="code"><pre><div class="line"><span class="comment">#usermod -md /home/usertest </span></div><div class="line"><span class="comment">#ls /home </span></div><div class="line">usertest</div></pre></td></tr></table></figure>
<h3 id="4-修改用户名"><a href="#4-修改用户名" class="headerlink" title="4.修改用户名"></a>4.修改用户名</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div></pre></td><td class="code"><pre><div class="line"><span class="comment">#usermod -l urchin(新用户名称)  test(原来用户名称) </span></div><div class="line"><span class="comment">#id urchin </span></div><div class="line">uid=500(urchin) gid=500(<span class="built_in">test</span>) groups=500(<span class="built_in">test</span>),501(usertest)</div></pre></td></tr></table></figure>
<h3 id="5-锁定-urchin-的密码"><a href="#5-锁定-urchin-的密码" class="headerlink" title="5.锁定 urchin 的密码"></a>5.锁定 urchin 的密码</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div></pre></td><td class="code"><pre><div class="line"><span class="comment"># sed -n '$p' /etc/shadow </span></div><div class="line">urchin:<span class="variable">$6</span><span class="variable">$1PwPVBn5</span><span class="variable">$o</span>.MIEYONzURQPvn/YqSp69kt2CIASvXhOnjv/t \</div><div class="line">Z5m4NN6bJyLjCG7S6vmji/PFDfbyITdm1WmtV45CfHV5vux/:15594:0:99999:7::: </div><div class="line"><span class="comment">#usermod -L urchin </span></div><div class="line"><span class="comment"># sed -n '$p' /etc/shadow </span></div><div class="line">urchin:!<span class="variable">$6</span><span class="variable">$1PwPVBn5</span><span class="variable">$o</span>.MIEYONzURQPvn/YqSp69kt2CIASvXhOnjv/t \</div><div class="line">Z5m4NN6bJyLjCG7S6vmji/PFDfbyITdm1WmtV45CfHV5vux/:15594:0:99999:7:::</div></pre></td></tr></table></figure>
<h3 id="6-解锁-urchin-的密码"><a href="#6-解锁-urchin-的密码" class="headerlink" title="6.解锁 urchin 的密码"></a>6.解锁 urchin 的密码</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div></pre></td><td class="code"><pre><div class="line"><span class="comment">#usermod -U urchin </span></div><div class="line"><span class="comment"># sed -n '$p' /etc/shadow </span></div><div class="line">urchin:<span class="variable">$6</span><span class="variable">$1PwPVBn5</span><span class="variable">$o</span>.MIEYONzURQPvn/YqSp69kt2CIASvXhOnjv/t \ </div><div class="line">Z5m4NN6bJyLjCG7S6vmji/PFDfbyITdm1WmtV45CfHV5vux/:15594:0:99999:7:::</div></pre></td></tr></table></figure>
<h3 id="7-修改用户的-shell"><a href="#7-修改用户的-shell" class="headerlink" title="7.修改用户的 shell"></a>7.修改用户的 shell</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div></pre></td><td class="code"><pre><div class="line"><span class="comment">#sed '$!d' /etc/passwd </span></div><div class="line">urchin:x:500:500::/home/usertest:/bin/bash </div><div class="line"><span class="comment">#usermod -s /bin/sh urchin </span></div><div class="line"><span class="comment">#sed -n '$p' /etc/passwd </span></div><div class="line">urchin:x:500:500::/home/usertest:/bin/sh</div></pre></td></tr></table></figure>
<h3 id="8-修改用户的-UID"><a href="#8-修改用户的-UID" class="headerlink" title="8.修改用户的 UID"></a>8.修改用户的 UID</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div></pre></td><td class="code"><pre><div class="line"><span class="comment">#usermod -u 578 urchin (UID必须唯一) </span></div><div class="line"><span class="comment">#id urchin </span></div><div class="line">uid=578(urchin) gid=500(<span class="built_in">test</span>) groups=500(<span class="built_in">test</span>),501(usertest)</div></pre></td></tr></table></figure>
<h3 id="9-修改用户的-GID"><a href="#9-修改用户的-GID" class="headerlink" title="9.修改用户的 GID"></a>9.修改用户的 GID</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div></pre></td><td class="code"><pre><div class="line"><span class="comment">#groupadd -g 578 test1 </span></div><div class="line"><span class="comment">#usermod -g 578 urchin (578组一定要存在) </span></div><div class="line"><span class="comment">#id urchin </span></div><div class="line">uid=578(urchin) gid=578(test1) groups=578(test1),501(usertest)</div></pre></td></tr></table></figure>
<h3 id="10-指定帐号过期日期"><a href="#10-指定帐号过期日期" class="headerlink" title="10.指定帐号过期日期"></a>10.指定帐号过期日期</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div></pre></td><td class="code"><pre><div class="line"><span class="comment"># sed -n '$p' /etc/shadow </span></div><div class="line">urchin:<span class="variable">$6</span><span class="variable">$1PwPVBn5</span><span class="variable">$o</span>.MIEYONzURQPvn/YqSp69kt2CIASvXhOnjv/t \ </div><div class="line">Z5m4NN6bJyLjCG7S6vmji/PFDfbyITdm1WmtV45CfHV5vux/:15594:0:99999:7::: </div><div class="line"><span class="comment"># usermod -e 2012-09-11 urchin </span></div><div class="line"><span class="comment"># sed -n '$p' /etc/shadow </span></div><div class="line">urchin:<span class="variable">$6</span><span class="variable">$1PwPVBn5</span><span class="variable">$o</span>.MIEYONzURQPvn/YqSp69kt2CIASvXhOnjv/t \ </div><div class="line">Z5m4NN6bJyLjCG7S6vmji/PFDfbyITdm1WmtV45CfHV5vux/:15594:0:99999:7::15594:</div></pre></td></tr></table></figure>
<h3 id="11-指定用户帐号密码过期多少天后，禁用该帐号"><a href="#11-指定用户帐号密码过期多少天后，禁用该帐号" class="headerlink" title="11.指定用户帐号密码过期多少天后，禁用该帐号"></a>11.指定用户帐号密码过期多少天后，禁用该帐号</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div></pre></td><td class="code"><pre><div class="line"><span class="comment"># usermod -f 0 urchin </span></div><div class="line"><span class="comment"># sed -n '$p' /etc/shadow </span></div><div class="line">urchin:<span class="variable">$6</span><span class="variable">$1PwPVBn5</span><span class="variable">$o</span>.MIEYONzURQPvn/YqSp69kt2CIASvXhOnjv/t \ </div><div class="line">Z5m4NN6bJyLjCG7S6vmji/PFDfbyITdm1WmtV45CfHV5vux/:15594:0:99999:7:0:15594:</div></pre></td></tr></table></figure>
<h2 id="注意"><a href="#注意" class="headerlink" title="注意"></a>注意</h2><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;usermod 不允许改变正在线上的使用者帐号名称。当 usermod 用来改变 userID ,必须确认这名 user 没在电脑上执行任何程序</p>
<p>/etc/passwd<br>user_name:x:uid:gid:commnet:home:shell        </p>
<p>/etc/shadow<br>username:passwd:lastchg:min:max:warn:inactive:expire:flag<br>–用户名<br>–密码<br>–从1970年1月1日起到上次修改密码所经过的天数<br>–密码再过几天可以被变更(0表示随时可以改变)<br>–密码再过几天必须被变更(99999表示永不过期)<br>–密码过期前几天提醒用户(默认为一周)<br>–密码过期几天后帐号被禁用<br>–从1970年1月1日算起，多少天后账号失效      </p>

	

	

</article>




	<article>
	
		<h1><a href="/2017/10/12/1. Linux 基础/1. Linux 简介/">Linux 简介</a></h1>
	
	<div class="article__infos">
		<span class="article__date">2017-10-12</span><br />
		
		
			<span class="article__tags">
			  	<a class="article__tag-link" href="/tags/Linux/">Linux</a>
			</span>
		
	</div>

	

	
		<h2 id="Linux-简史"><a href="#Linux-简史" class="headerlink" title="Linux 简史"></a>Linux 简史</h2><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Linux 操作系统的诞生、发展和成长过程始终依赖着五个重要支柱：UNIX 操作系统、MINIX 操作系统、GNU计划、POSIX 标准和Internet 网络。  </p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;1981 年IBM公司推出微型计算机IBM PC。   </p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;1991年，GNU计划已经开发出了许多工具软件，最受期盼的GNU C编译器已经出现，GNU的操作系统核心HURD一直处于实验阶段，没有任何可用性，实质上也没能开发出完整的GNU操作系统，但是GNU奠定了Linux用户基础和开发环境。   </p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;1991年初，林纳斯·托瓦兹开始在一台386sx兼容微机上学习minix操作系统。1991年4月，林纳斯·托瓦兹开始酝酿并着手编制自己的操作系统。  </p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;1991 年4 月13 日在comp.os.minix 上发布说自己已经成功地将bash 移植到了minix 上，而且已经爱不释手、不能离开这个shell软件了。    </p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;1991年7月3日，第一个与Linux有关的消息是在comp.os.minix上发布的（当然此时还不存在Linux这个名称，当时林纳斯·托瓦兹的脑子里想的可能是FREAX，FREAX的英文含义是怪诞的、怪物、异想天开等）。      </p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;1991年的10月5日，林纳斯·托瓦兹在comp.os.minix新闻组上发布消息，正式向外宣布Linux内核的诞生（Freeminix-like kernel sources for 386-AT）。 </p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;1993年，大约有100余名程序员参与了Linux内核代码编写/修改工作，其中核心组由5人组成，此时Linux 0.99的代码大约有十万行，用户大约有10万左右。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;1994年3月，Linux1.0发布，代码量17万行，当时是按照完全自由免费的协议发布，随后正式采用GPL协议。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;1995年1月，Bob Young创办了RedHat（小红帽），以GNU/Linux为核心，集成了400多个源代码开放的程序模块，搞出了一种冠以品牌的Linux，即RedHat Linux,称为Linux”发行版”，在市场上出售。这在经营模式上是一种创举。     </p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;1996年6月，Linux 2.0内核发布，此内核有大约40万行代码，并可以支持多个处理器。此时的Linux 已经进入了实用阶段，全球大约有350万人使用<br>。      </p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;1998年2月，以Eric Raymond为首的一批年轻的”老牛羚骨干分子”终于认识到GNU/Linux体系的产业化道路的本质，并非是什么自由哲学，而是市场竞争的驱动，创办了”Open Source Intiative”（开放源代码促进会）”复兴”的大旗，在互联网世界里展开了一场历史性的Linux产业化运动。      </p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;2001年1月，Linux 2.4发布，它进一步地提升了SMP系统的扩展性，同时它也集成了很多用于支持桌面系统的特性：USB，PC卡（PCMCIA）的支持，内置的即插即用，等等功能。      </p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;2003年12月，Linux 2.6版内核发布，相对于2.4版内核2.6在对系统的支持都有很大的变化。  </p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;2004年的第1月，SuSE嫁到了Novell，SCO继续顶着骂名四处强行“化缘”， Asianux， MandrakeSoft也在五年中首次宣布季度赢利。3月，SGI宣布成功实现了Linux操作系统支持256个Itanium 2处理器。</p>
<h2 id="主要特性"><a href="#主要特性" class="headerlink" title="主要特性"></a>主要特性</h2><h3 id="基本思想"><a href="#基本思想" class="headerlink" title="基本思想"></a>基本思想</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Linux的基本思想有两点：第一，一切都是文件；第二，每个软件都有确定的用途。其中第一条详细来讲就是系统中的所有都归结为一个文件，包括命令、硬件和软件设备、操作系统、进程等等对于操作系统内核而言，都被视为拥有各自特性或类型的文件。至于说Linux是基于Unix的，很大程度上也是因为这两者的基本思想十分相近。</p>
<h3 id="完全免费"><a href="#完全免费" class="headerlink" title="完全免费"></a>完全免费</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Linux是一款免费的操作系统，用户可以通过网络或其他途径免费获得，并可以任意修改其源代码。这是其他的操作系统所做不到的。正是由于这一点，来自全世界的无数程序员参与了Linux的修改、编写工作，程序员可以根据自己的兴趣和灵感对其进行改变，这让Linux吸收了无数程序员的精华，不断壮大。</p>
<h3 id="完全兼容POSIX1-0标准"><a href="#完全兼容POSIX1-0标准" class="headerlink" title="完全兼容POSIX1.0标准"></a>完全兼容POSIX1.0标准</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;这使得可以在Linux下通过相应的模拟器运行常见的DOS、Windows的程序。这为用户从Windows转到Linux奠定了基础。许多用户在考虑使用Linux时，就想到以前在Windows下常见的程序是否能正常运行，这一点就消除了他们的疑虑。</p>
<h3 id="多用户、多任务"><a href="#多用户、多任务" class="headerlink" title="多用户、多任务"></a>多用户、多任务</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Linux支持多用户，各个用户对于自己的文件设备有自己特殊的权利，保证了各用户之间互不影响。多任务则是现在电脑最主要的一个特点，Linux可以使多个程序同时并独立地运行。</p>
<h3 id="良好的界面"><a href="#良好的界面" class="headerlink" title="良好的界面"></a>良好的界面</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Linux同时具有字符界面和图形界面。在字符界面用户可以通过键盘输入相应的指令来进行操作。它同时也提供了类似Windows图形界面的X-Window系统，用户可以使用鼠标对其进行操作。在X-Window环境中就和在Windows中相似，可以说是一个Linux版的Windows。</p>
<h3 id="支持多种平台"><a href="#支持多种平台" class="headerlink" title="支持多种平台"></a>支持多种平台</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Linux可以运行在多种硬件平台上，如具有x86、680x0、SPARC、Alpha等处理器的平台。此外Linux还是一种嵌入式操作系统，可以运行在掌上电脑、机顶盒或游戏机上。2001年1月份发布的Linux 2.4版内核已经能够完全支持Intel 64位芯片架构。同时Linux也支持多处理器技术。多个处理器同时工作，使系统性能大大提高。</p>
<h2 id="桌面环境"><a href="#桌面环境" class="headerlink" title="桌面环境"></a>桌面环境</h2><h3 id="介绍"><a href="#介绍" class="headerlink" title="介绍"></a>介绍</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;在图形计算中，一个桌面环境（Desktop environment，有时称为桌面管理器）为计算机提供一个图形用户界面（GUI）。但严格来说窗口管理器和桌面环境是有区别的。桌面环境就是桌面图形环境，它的主要目标是为Linux/Unix操作系统提供一个更加完备 的界面以及大量各类整合工具和使用 程序，其基本 易用性吸引着大量的新用户。桌面环境名称来自桌面比拟，对应于早期的文字命令行界面（CLI）。一个典型的桌面环境提供图标，视窗，工具栏，文件夹，壁纸以及像拖放这样的能力。整体而言，桌面环境在设计和功能上的特性，赋予了它与众不同的外观和感觉。</p>
<h3 id="种类"><a href="#种类" class="headerlink" title="种类"></a>种类</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;现今主流的桌面环境有KDE，gnome，Xfce，LXDE等，除此之外还有Ambient，EDE，IRIX Interactive Desktop，Mezzo，Sugar，CDE等。</p>
<h3 id="gnome"><a href="#gnome" class="headerlink" title="gnome"></a>gnome</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;即GNU网络对象模型环境 (The GNU Network Object Model Environment)，GNU计划的一部分，开放源码运动的一个重要组成部分。是一种让使用者容易操作和设定电脑环境的工具。<br>目标是基于自由软件，为Unix或者类Unix操作系统构造一个功能完善、操作简单以及界面友好的桌面环境，他是GNU计划的正式桌面。</p>
<h3 id="Xfce"><a href="#Xfce" class="headerlink" title="Xfce"></a>Xfce</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;即XForms Common Environment，创建于2007年7月，类似于商业图形环境CDE，是一个运行在各类Unix下的轻量级桌面环境。原作者Olivier Fourdan最先设计XFce是基于XForms三维图形库。Xfce设计目的是用来提高系统的效率，在节省系统资源的同时，能够快速加载和执行应用程序。</p>
<h3 id="Fluxbox"><a href="#Fluxbox" class="headerlink" title="Fluxbox"></a>Fluxbox</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;是一个基于GNU/Linux的轻量级图形操作界面，它虽然没有GNOME和KDE那样精致 ，但由于它的运行对系统资源和配置要求极低，所以它被安装到很多较旧的或是对性能要求较高的机器上，其菜单和有关 配置被保存于用户根目录下的.fluxbox目录里，这样使得它的配置极为便利。</p>
<h3 id="Enlightenment"><a href="#Enlightenment" class="headerlink" title="Enlightenment"></a>Enlightenment</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;是一个功能强大的窗口管理器，它的目标是运用 户轻而易举地配置所见即所得的桌面图形界面。现在Enlightenment的界面已经相当豪华,它拥有像AfterStep一样的可视化时钟以及其它浮华的界面效果，用户不仅可以任意选择边框和动感的声音效果，最有吸引力的是由于它开放的设计思想，每一个用户可以根据自己的爱好，任意地配置窗口的边框、菜单以及屏幕上其它各个部分，而不须要 接触源代码，也不须要 编译任何程序。</p>
<h2 id="文件系统"><a href="#文件系统" class="headerlink" title="文件系统"></a>文件系统</h2><h3 id="文件类型"><a href="#文件类型" class="headerlink" title="文件类型"></a>文件类型</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>普通文件</strong>（regular file）：就是一般存取的文件，由ls -al显示出来的属性中，第一个属性为 [-]，例如 [-rwxrwxrwx]。另外，依照文件的内容，又大致可以分为：</p>
<ol>
<li>纯文本文件（ASCII）：这是Unix系统中最多的一种文件类型，之所以称为纯文本文件，是因为内容可以直接读到的数据，例如数字、字母等等。设 置文件几乎都属于这种文件类型。举例来说，使用命令“cat ~/.bashrc”就可以看到该文件的内容（cat是将文件内容读出来）。</li>
</ol>
<ol>
<li><p>二进制文件（binary）：系统其实仅认识且可以执行二进制文件（binary file）。Linux中的可执行文件（脚本，文本方式的批处理文件不算）就是这种格式的。举例来说，命令cat就是一个二进制文件。</p>
</li>
<li><p>数据格式的文件（data）：有些程序在运行过程中，会读取某些特定格式的文件，那些特定格式的文件可以称为数据文件（data file）。举例来说，Linux在用户登入时，都会将登录数据记录在 /var/log/wtmp文件内，该文件是一个数据文件，它能通过last命令读出来。但使用cat时，会读出乱码。因为它是属于一种特殊格式的文件。</p>
</li>
</ol>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>目录文件</strong>（directory）：就是目录，第一个属性为 [d]，例如 [drwxrwxrwx]。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>连接文件</strong>（link）：类似Windows下面的快捷方式。第一个属性为 [l]，例如 [lrwxrwxrwx]。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>设备与设备文件</strong>（device）：与系统外设及存储等相关的一些文件，通常都集中在 /dev目录。通常又分为两种：</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>块设备文件</strong>：就是存储数据以供系统存取的接口设备，简单而言就是硬盘。例如一号硬盘的代码是 /dev/hda1等文件。第一个属性为 [b]。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>字符设备文件</strong>：即串行端口的接口设备，例如键盘、鼠标等等。第一个属性为 [c]。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>套接字</strong>（sockets）：这类文件通常用在网络数据连接。可以启动一个程序来监听客户端的要求，客户端就可以通过套接字来进行数据通信。第一个属性为 [s]，最常在 /var/run目录中看到这种文件类型。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>管道</strong>（FIFO,pipe）：FIFO也是一种特殊的文件类型，它主要的目的是，解决多个程序同时存取一个文件所造成的错误。FIFO是first-in-first-out（先进先出）的缩写。第一个属性为 [p]。</p>
<h3 id="文件结构"><a href="#文件结构" class="headerlink" title="文件结构"></a>文件结构</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>/</strong>：根目录，所有的目录、文件、设备都在/之下，/就是Linux文件系统的组织者，也是最上级的领导者。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>/bin</strong>：bin 就是二进制（binary）英文缩写。在一般的系统当中，都可以在这个目录下找到linux常用的命令。系统所需要的那些命令位于此目录。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>/boot</strong>：Linux的内核及引导系统程序所需要的文件目录，比如 vmlinuz initrd.img 文件都位于这个目录中。在一般情况下，GRUB或LILO系统引导管理器也位于这个目录。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>/cdrom</strong>：这个目录在刚刚安装系统的时候是空的。可以将光驱文件系统挂在这个目录下。例如：mount /dev/cdrom /cdrom</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>/dev</strong>：dev 是设备（device)的英文缩写。这个目录对所有的用户都十分重要。因为在这个目录中包含了所有linux系统中使用的外部设备。但是这里并不是放的外部设备的驱动程序。这一点和常用的windows,dos操作系统不一样。它实际上是一个访问这些外部设备的端口。可以非常方便地去访问这些外部设备，和访问一个文件，一个目录没有任何区别。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>/etc</strong>：etc这个目录是linux系统中最重要的目录之一。在这个目录下存放了系统管理时要用到的各种配置文件和子目录。要用到的网络配置文件，文件系统，x系统配置文件，设备配置信息，设置用户信息等都在这个目录下。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>/home</strong>：如果建立一个用户，用户名是”xx”,那么在/home目录下就有一个对应的/home/xx路径，用来存放用户的主目录。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>/lib</strong>：lib是库（library）英文缩写。这个目录是用来存放系统动态连接共享库的。几乎所有的应用程序都会用到这个目录下的共享库。因此，千万不要轻易对这个目录进行什么操作，一旦发生问题，系统就不能工作了。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>/lost+found</strong>：在ext2或ext3文件系统中，当系统意外崩溃或机器意外关机，而产生一些文件碎片放在这里。当系统启动的过程中fsck工具会检查这里，并修复已经损坏的文件系统。有时系统发生问题，有很多的文件被移到这个目录中，可能会用手工的方式来修复，或移到文件到原来的位置上。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>/mnt</strong>：这个目录一般是用于存放挂载储存设备的挂载目录的，比如有cdrom等目录。可以参看/etc/fstab的定义。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>/media</strong>：有些linux的发行版使用这个目录来挂载那些usb接口的移动硬盘（包括U盘）、CD/DVD驱动器等等。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>/opt</strong>：这里主要存放那些可选的程序。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>/proc</strong>：可以在这个目录下获取系统信息。这些信息是在内存中，由系统自己产生的。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>/root</strong>：Linux超级权限用户root的家目录。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>/sbin</strong>：这个目录是用来存放系统管理员的系统管理程序。大多是涉及系统管理的命令的存放，是超级权限用户root的可执行命令存放地，普通用户无权限执行这个目录下的命令，这个目录和/usr/sbin; /usr/X11R6/sbin或/usr/local/sbin目录是相似的，凡是目录sbin中包含的都是root权限才能执行的。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>/selinux</strong> ：对SElinux的一些配置文件目录，SElinux可以让linux更加安全。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>/srv</strong> 服务启动后，所需访问的数据目录，举个例子来说，www服务启动读取的网页数据就可以放在/srv/www中</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>/tmp</strong>：临时文件目录，用来存放不同程序执行时产生的临时文件。有时用户运行程序的时候，会产生临时文件。/tmp就用来存放临时文件的。/var/tmp目录和这个目录相似。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>/usr</strong>：这是linux系统中占用硬盘空间最大的目录。用户的很多应用程序和文件都存放在这个目录下。在这个目录下，可以找到那些不适合放在/bin或/etc目录下的额外的工具</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>/usr/local</strong>：这里主要存放那些手动安装的软件，即不是通过“新立得”或apt-get安装的软件。它和/usr目录具有相类似的目录结构。让软件包管理器来管理/usr目录，而把自定义的脚本（scripts)放到/usr/local目录下面。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>/usr/share</strong> ：系统共用的东西存放地，比如 /usr/share/fonts 是字体目录，/usr/share/doc和/usr/share/man帮助文件。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>/var</strong>：这个目录的内容是经常变动的，看名字就知道，可以理解为vary的缩写，/var下有/var/log 这是用来存放系统日志的目录。/var/ www目录是定义Apache服务器站点存放目录；/var/lib 用来存放一些库文件，比如MySQL的，以及MySQL数据库的的存放地。</p>

	

	

</article>




	<article>
	
		<h1><a href="/2017/10/12/1. Linux 基础/10. Linux passwd 修改用户密码/">Linux 修改用户密码</a></h1>
	
	<div class="article__infos">
		<span class="article__date">2017-10-12</span><br />
		
		
			<span class="article__tags">
			  	<a class="article__tag-link" href="/tags/Linux/">Linux</a>
			</span>
		
	</div>

	

	
		<h2 id="命令：passwd"><a href="#命令：passwd" class="headerlink" title="命令：passwd"></a>命令：passwd</h2><h3 id="语法："><a href="#语法：" class="headerlink" title="语法："></a>语法：</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">passwd [username]</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;创建完账户后，默认是没有设置密码的，虽然没有密码，但该账户同样登录不了系统。只有设置好密码后才能登录系统。为用户创建密码时，为了安全起见，尽量设置复杂一些。<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;可以按照这样的规则来设置密码：      </p>
<ol>
<li>长度大于10个字符；</li>
<li>密码中包含大小写字母数字以及特殊字符 ‘*’ ，‘&amp;’ ，‘%’ 等；</li>
<li>不规则性（不要出现 root 、happy 、love 、linux 、7758520 、111111 等等单词或者数字）；</li>
<li>不要带有自己的名字、公司名字、自己电话、自己生日等。</li>
</ol>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div></pre></td><td class="code"><pre><div class="line">[root@localhost ~]<span class="comment"># passwd</span></div><div class="line">更改用户 root 的密码 。</div><div class="line">新的 密码：</div><div class="line">重新输入新的 密码：</div><div class="line">passwd： 所有的身份验证令牌已经成功更新。</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;“passwd” 后面不加 username 则是修改当先账户的密码。如果登录的是 root 账户，后面可以跟普通用户的名字，意思是修改指定账户的密码。</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div></pre></td><td class="code"><pre><div class="line">[root@localhost ~]<span class="comment"># passwd user11</span></div><div class="line">更改用户 user11 的密码 。</div><div class="line">新的 密码：</div><div class="line">重新输入新的 密码：</div><div class="line">passwd： 所有的身份验证令牌已经成功更新。</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;只有 root 用户才可以修改其他账户的密码，普通账户只能修改自己的密码，其他账户的密码是不可以修改的。</p>
<h3 id="passwd-几个比较重要的参数"><a href="#passwd-几个比较重要的参数" class="headerlink" title="passwd 几个比较重要的参数"></a>passwd 几个比较重要的参数</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div><div class="line">16</div></pre></td><td class="code"><pre><div class="line">[root@localhost beinan]<span class="comment"># passwd --help</span></div><div class="line">Usage: passwd [OPTION...] &lt;accountName&gt;</div><div class="line">-k, --keep-tokens       keep non-expired authentication tokens    注：保留即将过期的用户在期满后能仍能使用；</div><div class="line">-d, --delete            delete the password <span class="keyword">for</span> the named account (root only)    注：删除用户密码，仅能以root权限操作；</div><div class="line">-l, --lock              lock the named account (root only)    注：锁住用户无权更改其密码，仅能通过root权限操作；</div><div class="line">-u, --unlock            unlock the named account (root only)    注：解除锁定；</div><div class="line">-f, --force             force operation    注：强制操作；仅root权限才能操作；</div><div class="line">-x, --maximum=DAYS      maximum password lifetime (root only)          注：两次密码修正的最大天数，后面接数字；仅能root权限操作；</div><div class="line">-n, --minimum=DAYS      minimum password lifetime (root only)     注：两次密码修改的最小天数，后面接数字，仅能root权限操作；</div><div class="line">-w, --warning=DAYS      number of days warning users receives before     注：在距多少天提醒用户修改密码；仅能root权限操作；</div><div class="line">password expiration (root only)</div><div class="line">-i, --inactive=DAYS     number of days after password expiration when an     注：在密码过期后多少天，用户被禁掉，仅能以root操作；</div><div class="line">account becomes disabled (root only)</div><div class="line">-S, --status            report password status on the named account (root       注：查询用户的密码状态，仅能root用户操作；</div><div class="line">only)</div><div class="line">--stdin                 <span class="built_in">read</span> new tokens from stdin (root only)</div></pre></td></tr></table></figure>
<h2 id="命令：mkpasswd"><a href="#命令：mkpasswd" class="headerlink" title="命令：mkpasswd"></a>命令：mkpasswd</h2><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;这个命令经常用来生成密码，省的去想。默认 Linux 是没有这个命令的，需要安装一个包 “expect” ，如果 CentOS 可以上网，也可以使用命令完成安装。</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">yum install -y expect</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;安装好后，输入命令：</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div></pre></td><td class="code"><pre><div class="line">[root@localhost ~]<span class="comment"># mkpasswd</span></div><div class="line">HXut8oy*8</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;生成的随机字符串就可以作为一个密码，只不过这个密码不容易记忆。</p>
<h2 id="锁定和解锁某个账户"><a href="#锁定和解锁某个账户" class="headerlink" title="锁定和解锁某个账户"></a>锁定和解锁某个账户</h2><h3 id="锁定账户语法"><a href="#锁定账户语法" class="headerlink" title="锁定账户语法"></a>锁定账户语法</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">passwd -l username</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;让某个账户不能修改密码，可以用 -l 参数来锁定:</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div></pre></td><td class="code"><pre><div class="line">[root@localhost ~]<span class="comment"># passwd -l beinan 注：锁定用户beinan不能更改密码；</span></div><div class="line">Locking password <span class="keyword">for</span> user beinan.</div><div class="line">passwd: Success           注：锁定成功；</div><div class="line">[beinan@localhost ~]<span class="comment"># su beinan 注：通过su切换到beinan用户；</span></div><div class="line">[beinan@localhost ~]$ passwd 注：beinan来更改密码；</div><div class="line">Changing password <span class="keyword">for</span> user beinan.</div><div class="line">Changing password <span class="keyword">for</span> beinan</div><div class="line">(current) UNIX password: 注：输入beinan的当前密码；</div><div class="line">passwd: Authentication token manipulation error 注：失败，不能更改密码；</div></pre></td></tr></table></figure>
<h3 id="解锁账户语法"><a href="#解锁账户语法" class="headerlink" title="解锁账户语法"></a>解锁账户语法</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">passwd -u username</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;注意：这两个用法只有 root 账户才有资格执行。</p>
<h2 id="清除账户密码"><a href="#清除账户密码" class="headerlink" title="清除账户密码"></a>清除账户密码</h2><h3 id="语法"><a href="#语法" class="headerlink" title="语法"></a>语法</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">passwd -d username</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;例：</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div></pre></td><td class="code"><pre><div class="line">[root@localhost ~]<span class="comment"># passwd -d beinan 注：清除beinan用户密码；</span></div><div class="line">Removing password <span class="keyword">for</span> user beinan.</div><div class="line">passwd: Success                        注：清除成功；</div><div class="line">[root@localhost ~]<span class="comment"># passwd -S beinan 注：查询beinan用户密码状态；</span></div><div class="line">Empty password.                     注：空密码，也就是没有密码；</div><div class="line"></div><div class="line">注意： 当我们清除一个用户的密码时，登录时就无需密码；这一点要加以注意</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;注意：当清除一个账户的密码时，登录时就无需密码;这一点要嫁衣注意；</p>
<h2 id="密码时效命令：chage"><a href="#密码时效命令：chage" class="headerlink" title="密码时效命令：chage"></a>密码时效命令：chage</h2><h3 id="语法-1"><a href="#语法-1" class="headerlink" title="语法"></a>语法</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">chage [选项] [username]</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;chage 命令的选项说明：<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;-m days： 密码可更改的最小天数。为零时代表任何时候都可以更改密码。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;-M days： 指定口令有效的最多天数。当该选项指定的天数加上-d选项指定的天数小于当前的日期时，用户在使用该帐号前就必须改变口令。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;-d days： 指定从1970年1月1日起，口令被改变的天数。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;-I days： 指定口令过期后，帐号被锁前不活跃的天数。如果值为0，帐号在口令过期后就不会被锁。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;-E date： 指定帐号被锁的日期。日期格式YYYY-MM-DD。若不用日期，也可以使用自1970年1月1日后经过的天数。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;-W days： 指定口令过期前要警告用户的天数。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;-l： 列出指定用户当前的口令时效信息，以确定帐号何时过期。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;例如：要求用户 user1 两天内不能更改口令，并且口令最长的存活期为30天，并且口令过期前5天通知用户</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">chage -m 2 -M 30 -W 5 user1</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;可以使用如下命令查看用户 user1 当前的口令时效信息：</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">chage -l user1</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;提示：   </p>
<ol>
<li>可以使用 <code>chage [用户名]</code> 进入交互模式修改用户的口令时效。</li>
<li>修改口令实质上就是修改影子口令文件 <code>/etc/shadow</code> 中与口令时效相关的字段值。</li>
</ol>
<h2 id="chage-修改用户密码有限期限的命令"><a href="#chage-修改用户密码有限期限的命令" class="headerlink" title="chage 修改用户密码有限期限的命令"></a>chage 修改用户密码有限期限的命令</h2><h3 id="chage-语法格式"><a href="#chage-语法格式" class="headerlink" title="chage 语法格式"></a>chage 语法格式</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">chage [-l] [-m 最小天数] [-M 最大天数] [-W 警告] [-i 失效日] [-E 过期日] [-d 最后日]  username</div></pre></td></tr></table></figure>

	

	

</article>






	<span class="different-posts">📕 end of posts 📕</span>


	</main>

	<footer class="footer">
	<div class="footer-content">
		
	      <div class="footer__element">
	<p>Hi there, <br />welcome to my Blog glad you found it. Have a look around, will you?</p>
</div>

	    
	      <div class="footer__element">
	<h5>Check out</h5>
	<ul class="footer-links">
		<li class="footer-links__link"><a href="/archives">Archive</a></li>
		
		  <li class="footer-links__link"><a href="/atom.xml">RSS</a></li>
	    
		<li class="footer-links__link"><a href="/about">about page</a></li>
		<li class="footer-links__link"><a href="/tags">Tags</a></li>
		<li class="footer-links__link"><a href="/categories">Categories</a></li>
	</ul>
</div>

	    

		<div class="footer-credit">
			<span>© 2017 失落的乐章 | Powered by <a href="https://hexo.io/">Hexo</a> | Theme <a href="https://github.com/HoverBaum/meilidu-hexo">MeiliDu</a></span>
		</div>

	</div>


</footer>



</body>

</html>
